package com.zhangtai.modules.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class PromotionEntityDto {

    /**
     * 晋升Id
     */
    @TableId(value = "promotion_id", type = IdType.AUTO)
    @ApiModelProperty(value="晋升Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long promotionId;
    /**
     * 员工id
     */
    @ApiModelProperty(value="员工id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;
    /**
     * 工号
     */
    @ApiModelProperty(value="工号",required = false)
    private String code;

    /**
     * 部门id
     */
    @ApiModelProperty(value="部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeUnitId;

    /**
     * 公司id
     */
    @ApiModelProperty(value="公司id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeOrgId;

    /**
     * 职位id
     */
    @ApiModelProperty(value="职位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobId;
    /**
     * 晋升日期
     */
    @ApiModelProperty(value="晋升日期",required = false)
    private Date promotionDate;
    /**
     * 晋升类型，1：专业职级晋升，2：管理职级晋升
     */
    @ApiModelProperty(value="晋升类型，1：专业职级晋升，2：管理职级晋升",required = false)
    private Integer promotionType;

    /**
     * 晋级后部门id
     */
    @ApiModelProperty(value="晋级后部门id",required = false)
    private Long afterUnitId;

    /**
     * 晋级后公司ID
     */
    @ApiModelProperty(value="晋级后公司ID",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterOrgId;

    /**
     * 晋级后岗位id
     */
    @ApiModelProperty(value="晋级后岗位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobId;
    /**
     *
     */

    private Integer isDelete;
    /**
     *
     */
    private Date createTime;
    /**
     * 姓名
     */
    @ApiModelProperty(value="姓名",required = false)
    private String name;
    /**
     * 考察开始日期
     */
    @ApiModelProperty(value="考察开始日期",required = false)
    private Date beginExpeditionDate;
    /**
     * 考察结束日期
     */
    @ApiModelProperty(value="考察开始日期",required = false)
    private Date endExpeditionDate;
    /**
     * 考察期天数
     */
    @ApiModelProperty(value="考察期天数",required = false)
    private Integer expeditionDays;
    /**
     * 考察状态
     */
    @ApiModelProperty(value="考察状态",required = false)
    private Integer expeditionStatus;

    /**
     * 晋升前职级Id
     */
    @ApiModelProperty(value="晋升前职级Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobLevelId;

    /**
     * 晋升后职级Id
     */
    @ApiModelProperty(value="晋升后职级Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobLevelId;
    /**
     * 薪资组
     */
    @ApiModelProperty(value="薪资组",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long salaryGroupId;
    /**
     * 固定月薪
     */
    @ApiModelProperty(value="固定月薪",required = false)
    private BigDecimal monthlySalary;
    /**
     * 绩效模块
     */
    @ApiModelProperty(value="绩效模块",required = false)
    private BigDecimal performance;
    /**
     * 晋升原因
     */
    @ApiModelProperty(value="晋升原因",required = false)
    private String reason;
    /**
     * 文件url
     */
    @ApiModelProperty(value="文件url",required = false)

    private String fileUrl;

    /**
     * 申请人姓名
     */
    @ApiModelProperty(value="申请人姓名",required = false)
    private String applier;

    /**
     * 申请人code
     */
    @ApiModelProperty(value="申请人code",required = false)
    private String applierCode;

    /**
     * 审批状态 2审批中 3审批通过 4审批拒绝
     */
    @ApiModelProperty(value="审批状态 2审批中 3审批通过 4审批拒绝",required = false)
    private Integer status;

    @ApiModelProperty(value="晋升种类 0晋升 1降级",required = false)
    @NotNull(message = "晋升种类不能为空")
    private Integer promotionKind;

    @ApiModelProperty(value="薪资组分配情况，0:未分配，1：已分配",required = false)
    private Integer isDistribute;

    /**
     * bmp审核链接
     */
    @ApiModelProperty(value="bmp审核链接")
    private String checkUrl;

    /**
     * 消息推送状态： 0未推送 1已推送
     */
    @ApiModelProperty(value="消息推送状态： 0未推送 1已推送")
    private Integer isRemind;
    /**
     * 是否自助端发起 0：否 1：是
     */
    @ApiModelProperty(value="是否自助端发起 0：否 1：是")
    private Integer isSelf;
    @ApiModelProperty(value="晋升前职级类型",required = false)
    private String beforeJobType;

    @ApiModelProperty(value="晋升后职级类型",required = false)
    private String afterJobType;

    private Long orgId;

    private String applyName;

    private Long applyJobId;

    private Long applyUnitId;

    private Long applyOrgId;

    private Long applyJobLevelId;
}
